#include <map.h>


void generate_empty_map()
{// генерация пустой карты
    FILE* file = fopen("./empty_game.map", "w");
    if (file == NULL)
    {
        printf("Cannot open file!\n");
        exit(1);
    }

    char tmp[25];

    for (size_t x = 0; x < 256; x++)
    {
        for (size_t f = 0; f < 256; f++)
        {
            // Write a variable from file
            //sprintf(tmp,"%s ","1001.0.0");
            //fprintf(file,"", "1001.0.0 ");

            fprintf (file, "1001.0.0 ");
            //printf("vau!\n");
        }
        fprintf(file, "\n");
    }
    // Close file
    fclose(file);

}


void draw_map(struct screen* screen, int tail_size_x, int tail_size_y)
{

    struct focus_point_in_map
    {
        int end_x;
        int end_y;
    };

    struct focus_point_in_map focus_point_in_map;
    //зная номер первого тайла (ячейки в матрице) расчитываем координаты последнего в матрице отнасительно видимости на экране

    int begin_x=0;
    int begin_y=0;

    focus_point_in_map.end_x=begin_x+(screen->display->w/tail_size_x);
    focus_point_in_map.end_y=begin_y+(screen->display->h/tail_size_y);

    for (size_t i = 0; i < screen->display->h/tail_size_y+1;)
    {

        for (size_t y = 0; y < screen->display->w/tail_size_x+1;)
        {
            cell_values_map it = screen->map[begin_x+i][begin_y+y];

            DrawTile_map (it.val2, it.val3, 0+(y*tail_size_y), 0+(i*tail_size_x), tail_size_x, tail_size_y, it.val1, screen);
            /*Фунция для печати тайловыми картами (в параметрах координаты тайла в тайловой карте, координаты для печати,
            размеры тайла в карте, номер поверхности тайловой карты, структура screen)*/
            y++;
        }

    i++;
    }

}

void init_map(struct screen* screen)
{

    std::ifstream is ( "empty_game.map" ); // открываем файл в поток
    //std::istringstream is(generate_empty_map());
    while ( is )
    {//загоняем файл в матрицу структур
        std::string string = file_get_string(is);
        std::vector<std::string> strings = split_to_substring(string);
        std::vector<cell_values_map> items = substrings_to_items(strings);
        // добавляем строку в матрицу
        screen->map.push_back(items);
    }
}
